﻿using Library.Common.Model;
using Synthesize.BaseSet.ServiceInterface.Dtos.Authority.Role;
using Synthesize.BaseSet.ServiceInterface.Dtos.Authority.User;
using System.Threading.Tasks;

namespace Synthesize.BaseSet.ServiceInterface.UseCase.Authority
{
    public interface IRoleService
    {

        /// <summary>
        /// 创建角色
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> Create(CreateRoleInput input);


        /// <summary>
        /// 禁用/启用角色
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> ForbidOrEnable(ForbidOrEnableInput input);

        /// <summary>
        /// 更新角色
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> Update(UpdateRoleInput input);

        /// <summary>
        /// 修改角色对应的菜单权限信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> UpdateRoleMenu(UpdateRoleMenuInput input);

        /// <summary>
        /// 修改角色对应的用户信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> UpdateRoleUser(UpdateRoleUserInput input);

        /// <summary>
        /// 删除角色
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> DeleteById(SingleDeleteInput input);

        /// <summary>
        /// 批量删除角色
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> DeleteByIds(BatchDeleteInput input);

        /// <summary>
        /// 删除指定的用户-角色关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<bool>> DeleteUserRole(DeleteUserRoleInput input);

    }
}
